home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
076-100
/
disk_096
/
animplayer
/
xordltashort.c
< prev
Wrap
C/C++ Source or Header
|
1992-05-06
|
2KB
|
76 lines
/***************************************************************************
*
* NAME
* XORDLTAshort -- unpack an animation frame
*
* SYNOPSIS
* XORDLTAshort( bm, deltaword );
*
* struct BitMap *bm;
* UWORD *deltaword;
*
* DESCRIPTION
* Uses the ANIM XOR, offset/number, vertical compression technique
* for unpacking animation frames.
*
* copyright (c) 1987 Martin D. Hash
*
* LAST EDITED
* Martin Hash 23 Aug 1987
*
* EDIT HISTORY
* 22 Mar 1987 MH Created.
* 16 Aug ANIM standard.
*
**********************************************************************/
#include <exec/types.h>
#include <intuition/intuition.h>
#include "df1:ANIMCons.h"
/* FUNCTION */
int XORDLTAshort( bm, deltaword )
struct BitMap *bm;
UWORD *deltaword;
{
/* LOCAL VARIABLES */
int i;
LONG *deltadata;
register WORD *ptr, *planeptr;
register int s, size, nw;
register WORD *data, *dest;
/* CODE */
deltadata = (LONG *)deltaword;
nw = bm->BytesPerRow >>1;
for (i = 0; i < bm->Depth; i++) {
planeptr = (WORD *)(bm->Planes[i]);
data = deltaword + deltadata[i];
ptr = deltaword + deltadata[i+8];
while (*ptr != -1) {
dest = planeptr + *ptr++;
size = *ptr++;
if (size < 0) {
for (s = size; s < 0; s++) {
*dest ^= *data;
dest += nw;
}
data++;
}
else {
for (s = 0; s < size; s++) {
*dest ^= *data++;
dest += nw;
}
}
}
}
return(0);
}